package com.dragon.modules.yuegou.utils;


import org.apache.commons.lang3.StringUtils;

import java.time.format.DateTimeFormatter;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class PrivateStringUtils extends StringUtils {
    private static final String MOBILE_REG = "^((13\\d)|(14\\d)|(15\\d)|(16\\d)|(17\\d)|(18\\d)|(19\\d))\\d{8}$";

    /**
     * 判断是否由纯数字组成
     *
     * @param str 源字符串
     * @return 是否数字的标志
     */
    public static boolean isNum(String str){
        return str.matches("^[-+]?((\\d+)([.](\\d+))?|([.](\\d+))?)$");
    }


    /**
     * 局部隐藏手机号位，隐藏从第4位到第7位
     * @param mobileNo 传入的手机号码
     * @return 被局部隐藏后的手机号码
     */
    public static String maskMobileNo(String mobileNo){
        if (isMobileNO(mobileNo)){
            StringBuilder sb = new StringBuilder();
            sb.append(mobileNo.substring(0, 3)).append("****").append(mobileNo.substring(9));
            return sb.toString();
        }
        return mobileNo;
    }

    /**
     * 局部隐藏车牌号，隐藏从第4位到第7位
     * @param plateNumber 传入的手机号码
     * @return 被局部隐藏后的手机号码
     */
    public static String maskPlateNumber(String plateNumber){
        if (StringUtils.isNotBlank(plateNumber)){
            StringBuilder sb = new StringBuilder();
            sb.append(plateNumber.substring(0, 2));
            int len = plateNumber.length() -5;
            if (len >0){
               for (int i=0;i<len;i++){
                   sb.append("*");
               }
            }
            sb.append(plateNumber.substring(plateNumber.length()-3));
            return sb.toString();
        }
        return plateNumber;
    }

    public static String maskNickName(String nickName){
        if (StringUtils.isNotBlank(nickName)){
            if (nickName.length()==1){
                return "*";
            }
            StringBuilder sb = new StringBuilder();
            int len = nickName.length() -1;
            if (len >0){
                for (int i=0;i<len;i++){
                    sb.append("*");
                }
            }
            sb.append(nickName.substring(nickName.length()-1));
            return sb.toString();
        }
        return nickName;
    }

    /**
     * 判断是否正整数数字组成
     *
     * @param str 源字符串
     * @return 是否数字的标志
     */
    public static boolean iszzsNum(String str){
        if (StringUtils.isEmpty(str)){
            return false;
        }
        Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");
        return pattern.matcher(str).matches();
    }


    /**
     * 验证手机号码
     *
     * @param mobiles
     * @return
     */
    public static boolean isMobileNO(String mobiles) {
        boolean flag = false;
        try {
            Pattern p = Pattern.compile(MOBILE_REG);
            Matcher m = p.matcher(mobiles);
            flag = m.matches();
        } catch (Exception e) {
            flag = false;
        }
        return flag;
    }

    /**
     * 验证手机号码
     *
     * @param mobiles
     * @return
     */
    public static boolean isNotMobileNO(String mobiles) {
        return !isMobileNO(mobiles);
    }
    
    /**
     * 生成一个随机CODE，不保证唯一性
     * @return
     */
	public static String getCode() {
		String str = System.currentTimeMillis() + "";
		// 字符串
		String string = str.substring(str.length() - 5);
		// 循环得到10个字母
		for (int i = 0; i < 5; i++) {
			// 得到随机字母
			char c = (char) ((Math.random() * 26) + 97);
			// 拼接成字符串
			string = (c + "") + string;
		}
		return string.toUpperCase();
	}

	public static boolean isDateFormatter(String dateStr){
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        try {
            formatter.parse(dateStr);
        }catch (Exception e){
            return false;
        }
        return true;
    }

}
